

local Tool=_G.CommonOHOH.load.WeaponTool();

local function_list =_G.ClientOHOH.function_list
local M=_G.ClientOHOH.class.new(script, _G.ClientOHOH.files.Client_PlayerComponent(),script.Parent.Name);
local ConnectClass=_G.CommonOHOH.load.Connect();

function M.new(self,...)
	return M(self,...);
end;

function M.ctor(self, parent)
	M.super.ctor(self, parent);	

    self.DataStore=self.parent:GetComponent(_G.ClientOHOH.load.Client_PlayerDataComponent())

    self:InitData(self.DataStore:GetData("weapon"))
    self.WeaponUpdateEvent=ConnectClass.new()

    self.parent.UserDataEvent:Connect(function(data)
        if data["weapon"] then
            self:Update(self.DataStore:GetData("weapon"))
            self.WeaponUpdateEvent:Action()
        elseif data["broEquip"] then
            self:AddProcess(function()
                self.WeaponUpdateEvent:Action()
            end)
        
        end;

    end);
    

    --给UI添加控制器
    self:AddProcess(function()
        task.wait()
        self.parent:AddPrivateComponent(script.WeaponStoreGuiCtrl)
    end)

end;

function M.dtor(self)
	M.super.dtor(self);
end;


function M.CreateOne(self,id,had)
    local data=Tool.Calculate(id)
    data["count"]=had
    return data
end

function M.InitData(self,data)
    self.Had={}
    self.Equip=data.equip
    for k,v in pairs(data.had) do
        if v>0 then
            self.Had[k]=self:CreateOne(k,v)
        end
    end
end

function M.Update(self,data)
    self.Had={}
    self.Equip=data.equip
    for k,v in pairs(data.had) do
        if v>0 then
            self.Had[k]=self:CreateOne(k,v)
        end
    end
end

---***********************以下为接口****************************
--获取武器信息
-- 返回值：数组，格式：
-- {
--    ["1_1"]={
--         cfgId=1,配置表Id
--         level=1,--等级
--         titleName="传说",
--         titleId=0,
--         power=1000,--攻击力
--         nextPower=2000,--下一等级的攻击力
--         icon="1245",--武器的图片
--         count=10-- 拥有多少个
--         upgrade={base_wins=100},--升级所需
--         merge=3,--合成所需
--     },

--    ["1_2"]={
--         cfgId=1,配置表Id
--         level=2,--等级
--         titleName="传说",
--         titleId=0,
--         power=1000,--攻击力
--         nextPower=2000,--下一等级的攻击力
--         icon="1245",--武器的图片
--         count=10-- 拥有多少个
--         upgrade={base_wins=100},--升级所需
--         merge=3,--合成所需

--     },
-- }
--获取所有武器
function M.GetWeapon(self)
    return self.Had
end

--获取正装备的（玩家）
-- 返回值：武器Id
function M.GetEquip(self)
    return self.Equip
end

--获取好友装备的武器
function M.GetBroEquip(self)
    return self.DataStore:GetData("broEquip")
end

--获取好友
function M.GetBroInfoByBroId(self,broId)
    return self.DataStore:GetData("bro").had[broId]
end

--装备最佳
-- 返回值：true，成功，false 失败
function M.EquipBest(self) 
    if self:cd() then
        return self:Invoke(function_list.weapon_Operate,"EquipBest")
    end
   
end

--判断好友是否装备了本武器
function M.IsBroEquip(self,weaponId,broId)
    local broEuqip=self:GetBroEquip()
    -- print("________1___________",weaponId,broId)
    -- _G.CommonOHOH:PrintTable(broEuqip)
    if broEuqip[broId] and broEuqip[broId]==weaponId then
        -- print("________2__________",broEuqip[broId],weaponId)

        return true
    end
    -- print("________3__________",weaponId)

    return false
end


--装备参数:武器Id
-- 返回值：true，成功，false 失败
function M.EquipWeapon(self,weaponId,broId)
    if broId==nil then
        if self:GetEquip()==weaponId then
            _G.GlobalTipGui:Show( _G.LanguageHelper:GetText(8888007))
            return true
        else
            local a=self:Invoke(function_list.weapon_Operate,"Equip",weaponId)
            -- print("+++++++++EquipWeapon+++++",a)
            if a then
                _G.GlobalTipGui:Show( _G.LanguageHelper:GetText(8888007))
                return true
            end
            return false
        end
    else
        if self:IsBroEquip(weaponId,broId) then
            _G.GlobalTipGui:Show( _G.LanguageHelper:GetText(8888007))
            return true
        else
            local a=self:Invoke(function_list.weapon_Operate,"BroEquip",weaponId,broId)
            -- print("+++++++++BroEquip+++++",a)

            if a then
                _G.GlobalTipGui:Show( _G.LanguageHelper:GetText(8888007))
                return true
            end
            return false
        end
    end

   
end

-- 升级:weapId
-- 返回值：true，成功，false 失败， 错误码：1：货币不够，2,武器数量不够，3未知原因
function M.Upgrade(self,list)

    if #list<3 then
        _G.GlobalTipGui:Show( _G.LanguageHelper:GetText(8888006))
        return false,2
    end


    local weaponId=list[1].weaponId
    local  errorCode= Tool.IsCanUpgrade(weaponId,self.DataStore)
    -- 错误码：1：货币不够，2,武器数量不够，3未知原因
    if  errorCode==1 then
        _G.GlobalTipGui:Show( _G.LanguageHelper:GetText(8888005))
        return false,errorCode
    elseif  errorCode==2 then
        _G.GlobalTipGui:Show( _G.LanguageHelper:GetText(8888006))
        return false,errorCode
     elseif  errorCode==3 then
        _G.GlobalTipGui:Show( _G.LanguageHelper:GetText(8888004))
        return false,errorCode
     elseif  errorCode==0 then
        if self:cd() then
            local r,e= self:Invoke(function_list.weapon_Operate,"Upgrade",weaponId)
            if  r then
                _G.GlobalTipGui:Show( _G.LanguageHelper:GetText(8888003))
                return true
            else
                return false,e
            end
        end
    end



end

-- 删除:weapId
--数量:{weaponId=count,weaponId=count}
--返回值：true，成功，false 失败

function M.Remove(self,list)

    if self:cd() then
        return   self:Invoke(function_list.weapon_Operate,"Remove",list)
    end
  
end

--获取武器的美术资源
function M.GetWeaponArt(self,id)
    return self.Had[id].art
end

function M.cd(self)
   if  not self.lastTime then
        self.lastTime=tick()
        return true
   end
   if tick()-self.lastTime>0.2 then
        return true
   else
        return false
   end
end


return M